package 连续子数组的最大和;

//class Solution {
//    static int N = 1010;
//    static int[] f = new int[N];
//
//    public int maxSubArray(int[] nums) {
//        int ret = -0x3f3f3f3f;
//        for (int i = 0; i < nums.length; i++) {
//            if (f[i] > 0) {
//                f[i + 1] = nums[i] + f[i];
//            } else {
//                f[i + 1] = nums[i];
//            }
//            ret = Math.max(f[i+1], ret);
//        }
//        return ret;
//    }
//}


class Solution {
    public int maxSubArray(int[] nums) {
        int ret = nums[0];
        for (int i = 1, s = nums[0]; i < nums.length; i++) {
            s = nums[i] + Math.max(0, s);
            ret = Math.max(ret, s);
        }
        return ret;
    }
}